{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "# Visualization of MLP weights on MNIST\n",
    "\n",
    "\n",
    "Sometimes looking at the learned coefficients of a neural network can provide\n",
    "insight into the learning behavior. For example if weights look unstructured,\n",
    "maybe some were not used at all, or if very large coefficients exist, maybe\n",
    "regularization was too low or the learning rate too high.\n",
    "\n",
    "This example shows how to plot some of the first layer weights in a\n",
    "MLPClassifier trained on the MNIST dataset.\n",
    "\n",
    "The input data consists of 28x28 pixel handwritten digits, leading to 784\n",
    "features in the dataset. Therefore the first layer weight matrix have the shape\n",
    "(784, hidden_layer_sizes[0]).  We can therefore visualize a single column of\n",
    "the weight matrix as a 28x28 pixel image.\n",
    "\n",
    "To make the example run faster, we use very few hidden units, and train only\n",
    "for a very short time. Training longer would result in weights with a much\n",
    "smoother spatial appearance.\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "from sklearn.datasets import fetch_openml\n",
    "from sklearn.neural_network import MLPClassifier"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Load data from https://www.openml.org/d/554\n",
    "X, y = fetch_openml('mnist_784', version=1, return_X_y=True)\n",
    "X = X / 255."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "# rescale the data, use the traditional train/test split\n",
    "X_train, X_test = X[:60000], X[60000:]\n",
    "y_train, y_test = y[:60000], y[60000:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Iteration 1, loss = 0.32009978\n",
      "Iteration 2, loss = 0.15347534\n",
      "Iteration 3, loss = 0.11544755\n",
      "Iteration 4, loss = 0.09279764\n",
      "Iteration 5, loss = 0.07889367\n",
      "Iteration 6, loss = 0.07170497\n",
      "Iteration 7, loss = 0.06282111\n",
      "Iteration 8, loss = 0.05530788\n",
      "Iteration 9, loss = 0.04960484\n",
      "Iteration 10, loss = 0.04645355\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\MyPythonWork\\MachineLearning-WatermelonBook\\venv\\lib\\site-packages\\sklearn\\neural_network\\multilayer_perceptron.py:566: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (10) reached and the optimization hasn't converged yet.\n",
      "  % self.max_iter, ConvergenceWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Training set score: 0.986800\n",
      "Test set score: 0.970000\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 16 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# mlp = MLPClassifier(hidden_layer_sizes=(100, 100), max_iter=400, alpha=1e-4,\n",
    "#                     solver='sgd', verbose=10, tol=1e-4, random_state=1)\n",
    "mlp = MLPClassifier(hidden_layer_sizes=(50,), max_iter=10, alpha=1e-4,\n",
    "                    solver='sgd', verbose=10, tol=1e-4, random_state=1,\n",
    "                    learning_rate_init=.1)\n",
    "\n",
    "mlp.fit(X_train, y_train)\n",
    "print(\"Training set score: %f\" % mlp.score(X_train, y_train))\n",
    "print(\"Test set score: %f\" % mlp.score(X_test, y_test))\n",
    "\n",
    "fig, axes = plt.subplots(4, 4)\n",
    "# use global min / max to ensure all weights are shown on the same scale\n",
    "vmin, vmax = mlp.coefs_[0].min(), mlp.coefs_[0].max()\n",
    "for coef, ax in zip(mlp.coefs_[0].T, axes.ravel()):\n",
    "    ax.matshow(coef.reshape(28, 28), cmap=plt.cm.gray, vmin=.5 * vmin,\n",
    "               vmax=.5 * vmax)\n",
    "    ax.set_xticks(())\n",
    "    ax.set_yticks(())\n",
    "\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.2"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
